/*
  大魔王林克
  题目描述
    大魔王林克要给波克布林们发食物了！
    为了保证秩序，波克布林们需要排队来领取食物，同时，每个波克布林都有一个自己的 ID。
    但是大魔王肯定是有自己的独特癖好的，大魔王想让排队的队列中，
    任意两个相邻的波克布林的 ID 之和均为偶数。

    若要满足这个条件，请你计算最少的需要移出队列的波克布林的数目。
  输入
    第一行包括一个整数 t (1 ≤ t ≤ 100), 表示有 t 组数据
    每组数据的第一行包括一个整数 n（3 ≤ n ≤ 10^5)
    每组数据的第二行包括 n 个整数 a1, a2, ... , an (1 ≤ ai ≤ 10^9)
    保证 n 在所有数据里不超过 10^5
  输出
    输出 t 行，表示最少的需要移出队列的波克布林的数目。
  样例输入
    2
    5
    2 4 3 6 8
    6
    3 5 9 7 1 3
  样例输出
    1
    0
  提示
    输入输出样例说明：
      在第一组数据中，删除 3 后序列变成 [2、4、6、8], 满足题目要求，因此只需删除一个元素即可，输出 1
      在第二组数据中，每两个连续数的和都是偶数，因此不需要删除任何元素，输出 0
*/

#include <bits/stdc++.h>

using namespace std;

int main() {
    int t;
    cin >> t;

    for (int i = 1; i <= t; i++) {
        int n;
        cin >> n;
        int x = 0;
        int y = 0;
        long long a1[100005] = {};

        for (int i = 0; i < n; i++) {
            cin >> a1[i];
        }

        /*
          注意:
            要符合题意, 有 2 种可能的情况:
             1) 这一组数据全是偶数
             2) 这一组数据全是奇数
            因此, 统计这种数据中偶数的个数(假设为 x)和奇数的个数(假设为 y), x 和 y 中的最小的值即为要移除的元素的个数
        */
        for (int i = 0; i < n; i++) {
            if (a1[i] % 2 == 0) {
                y++;
            } else {
                x++;
            }
        }

        if (x > y) {
            cout << y << endl;
        }else {
            cout << x << endl;
        }
    }

    return 0;
}